package com.danbay.framework.db.pagination;

import com.baomidou.mybatisplus.plugins.Page;
import com.danbay.framework.utils.BeanUtils;

/**
 * @author SJG
 *         2018/1/8.
 */
public class PagingHelper {

    /**
     * 分页查询
     *
     * @param param     分页查询参数
     * @param resultCls    结果列表类型
     * @param queryCls    mapper查询参数类型
     * @param pageQuery 数据库分页查询方法
     * @param <R>       结果列表类型
     * @return 分页列表
     */
    public static <R, Q> PageResult<R> pageQuery(PageParam param, Class<R> resultCls, Class<Q> queryCls, PageQuery pageQuery) {
        Page page = new Page(param.getCurrent(), param.getSize());
        Q queryParam = BeanUtils.convert(param.getCondition(), queryCls);
        page.setRecords(BeanUtils.convert(pageQuery.find(page, queryParam),resultCls));
        PageResult pageResult=new PageResult();
        pageResult.setPages(page.getPages());
        pageResult.setTotal(page.getTotal());
        pageResult.setCurrent(page.getCurrent());
        pageResult.setSize(page.getSize());
        pageResult.setRecords(page.getRecords());
        return pageResult;
    }
}
